Guava হলো Google দ্বারা তৈরি একটি ওপেন সোর্স জাভা লাইব্রেরি, যা জাভা প্রোগ্রামিং এর উন্নত কার্যকারিতা ও কোডের সরলতা বাড়ানোর জন্য ব্যবহার করা হয়। এটি ডেভেলপারদের বিভিন্ন ইউটিলিটি ক্লাস এবং ফাংশন সরবরাহ করে, যা জাভা প্রোগ্রামিং এর বিভিন্ন সমস্যার কার্যকর সমাধান প্রদান করে। Java Collections Framework এর কার্যকারিতা বাড়াতে এবং জটিল কাজগুলোকে সহজ করে তোলার জন্য Guava অত্যন্ত কার্যকরী।
Guava হলো Google দ্বারা তৈরি একটি ওপেন সোর্স Java লাইব্রেরি, যা ডাটা স্ট্রাকচার, কনকারেন্সি টুলস, ক্লেকশন হ্যান্ডলিং, ক্যাশিং, স্ট্রিং ম্যানিপুলেশন, এবং অন্যান্য বেশ কিছু উন্নত ফিচার সরবরাহ করে। এটি Java ডেভেলপারদের জন্য কোড লেখাকে দ্রুত, কার্যকর এবং সহজ করে তোলে। Guava মূলত Java Collections Framework এর সীমাবদ্ধতাগুলো কাটিয়ে উঠতে সাহায্য করে এবং Java প্রোগ্রামিংকে আরও ফ্লেক্সিবল ও কার্যকর করে।
Guava এর কিছু জনপ্রিয় মডিউল হলো:
Guava ব্যবহার করার জন্য আপনাকে Maven প্রজেক্টে ডিপেন্ডেন্সি যোগ করতে হবে। pom.xml ফাইলে নিচের ডিপেন্ডেন্সিটি যোগ করুন:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.1-jre</version>
</dependency>
Guava Collections এর মধ্যে বেশ কিছু উন্নত ডেটা স্ট্রাকচার রয়েছে, যা Java Collections Framework এর সাথে যুক্ত করা হয়েছে। এর মধ্যে রয়েছে Immutable Collections, Multimap, BiMap, ইত্যাদি।
Immutable Collections হলো এমন একটি ডেটা স্ট্রাকচার, যা একবার তৈরি করার পর আর পরিবর্তন করা যায় না। Guava এর মাধ্যমে সহজেই Immutable Collection তৈরি করা যায়:
import com.google.common.collect.ImmutableList;
public class ImmutableCollectionExample {
public static void main(String[] args) {
ImmutableList<String> fruits = ImmutableList.of("Apple", "Banana", "Mango");
// ImmutableList এর উপাদান প্রিন্ট করা
for (String fruit : fruits) {
System.out.println(fruit);
}
// এটি Exception ছুড়বে, কারণ ImmutableList পরিবর্তনযোগ্য নয়
// fruits.add("Orange");
}
}
এই উদাহরণে, ImmutableList তৈরি করা হয়েছে, যা পরিবর্তনযোগ্য নয়। যদি আপনি এটি পরিবর্তন করতে চান, তবে এটি UnsupportedOperationException থ্রো করবে।
Multimap হলো একটি বিশেষ ধরণের ডেটা স্ট্রাকচার, যেখানে একাধিক ভ্যালু একটি কী এর সাথে যুক্ত থাকতে পারে। এটি Map এর মতো, তবে একাধিক ভ্যালু সংরক্ষণ করতে পারে:
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
public class MultimapExample {
public static void main(String[] args) {
Multimap<String, String> multimap = ArrayListMultimap.create();
// একাধিক ভ্যালু একটি কী এর সাথে যোগ করা
multimap.put("Fruit", "Apple");
multimap.put("Fruit", "Banana");
multimap.put("Vegetable", "Carrot");
// Fruit কী এর সব ভ্যালু প্রিন্ট করা
System.out.println("Fruits: " + multimap.get("Fruit"));
}
}
এই উদাহরণে, Multimap ব্যবহার করে একাধিক Fruit একটি কী এর সাথে সংরক্ষণ করা হয়েছে।
Guava স্ট্রিং ম্যানিপুলেশনকে সহজ করার জন্য বেশ কিছু শক্তিশালী টুল সরবরাহ করে, যেমন Joiner, Splitter, ইত্যাদি।
Joiner ব্যবহার করে আপনি সহজেই একাধিক স্ট্রিংকে একত্রিত করতে পারেন:
import com.google.common.base.Joiner;
public class JoinerExample {
public static void main(String[] args) {
String result = Joiner.on(", ").join("Apple", "Banana", "Mango");
System.out.println(result); // আউটপুট: Apple, Banana, Mango
}
}
উপরের উদাহরণে, Joiner ব্যবহার করে কমা এবং স্পেস দিয়ে স্ট্রিংগুলো একত্রিত করা হয়েছে।
Splitter ব্যবহার করে আপনি স্ট্রিংকে আলাদা আলাদা অংশে ভাগ করতে পারেন:
import com.google.common.base.Splitter;
public class SplitterExample {
public static void main(String[] args) {
Iterable<String> result = Splitter.on(",").trimResults().split("Apple, Banana, Mango");
for (String str : result) {
System.out.println(str);
}
}
}
এই উদাহরণে, Splitter ব্যবহার করে কমা দিয়ে বিভক্ত করা হয়েছে এবং প্রতিটি উপাদান প্রিন্ট করা হয়েছে।
Caching মেমরিতে ডেটা সংরক্ষণ করে অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করার জন্য ব্যবহৃত হয়। Guava এর মাধ্যমে সহজে ক্যাশ ম্যানেজমেন্ট করা যায়:
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import java.util.concurrent.TimeUnit;
public class CacheExample {
public static void main(String[] args) {
// Cache তৈরি করা
Cache<String, String> cache = CacheBuilder.newBuilder()
.expireAfterWrite(5, TimeUnit.MINUTES)
.maximumSize(100)
.build();
// Cache এ ভ্যালু রাখা
cache.put("name", "John");
// Cache থেকে ভ্যালু রিটার্ন করা
System.out.println("Name from cache: " + cache.getIfPresent("name"));
}
}
এই উদাহরণে, Guava এর Cache ব্যবহার করে ৫ মিনিটের জন্য ডেটা ক্যাশে সংরক্ষণ করা হয়েছে।
Preconditions ক্লাস ব্যবহার করে আপনি মেথডের ইনপুট যাচাই করতে পারেন এবং যদি ইনপুট সঠিক না হয় তবে exception থ্রো করাতে পারেন:
import com.google.common.base.Preconditions;
public class PreconditionsExample {
public static void main(String[] args) {
int age = 15;
Preconditions.checkArgument(age >= 18, "Age must be 18 or above");
}
}
এই উদাহরণে, যদি বয়স ১৮ এর কম হয়, তবে IllegalArgumentException থ্রো করা হবে।
Guava হলো একটি শক্তিশালী এবং কার্যকর Java লাইব্রেরি, যা ডেভেলপারদের উন্নত ডেটা স্ট্রাকচার, ক্যাশিং, স্ট্রিং ম্যানিপুলেশন এবং কনকারেন্সি টুলস সরবরাহ করে। এটি Java Collections Framework এর সীমাবদ্ধতাগুলো কাটিয়ে উঠতে সাহায্য করে এবং ডেভেলপারদের কোডিং সহজ ও দ্রুত করে তোলে। Guava এর API খুবই সহজ এবং উন্নত, যা বড় বড় প্রজেক্টে কার্যকরভাবে ব্যবহৃত হয়।
Guava হলো Google দ্বারা তৈরি একটি ওপেন সোর্স জাভা লাইব্রেরি, যা জাভা প্রোগ্রামিং এর উন্নত কার্যকারিতা ও কোডের সরলতা বাড়ানোর জন্য ব্যবহার করা হয়। এটি ডেভেলপারদের বিভিন্ন ইউটিলিটি ক্লাস এবং ফাংশন সরবরাহ করে, যা জাভা প্রোগ্রামিং এর বিভিন্ন সমস্যার কার্যকর সমাধান প্রদান করে। Java Collections Framework এর কার্যকারিতা বাড়াতে এবং জটিল কাজগুলোকে সহজ করে তোলার জন্য Guava অত্যন্ত কার্যকরী।
Guava হলো Google দ্বারা তৈরি একটি ওপেন সোর্স Java লাইব্রেরি, যা ডাটা স্ট্রাকচার, কনকারেন্সি টুলস, ক্লেকশন হ্যান্ডলিং, ক্যাশিং, স্ট্রিং ম্যানিপুলেশন, এবং অন্যান্য বেশ কিছু উন্নত ফিচার সরবরাহ করে। এটি Java ডেভেলপারদের জন্য কোড লেখাকে দ্রুত, কার্যকর এবং সহজ করে তোলে। Guava মূলত Java Collections Framework এর সীমাবদ্ধতাগুলো কাটিয়ে উঠতে সাহায্য করে এবং Java প্রোগ্রামিংকে আরও ফ্লেক্সিবল ও কার্যকর করে।
Guava এর কিছু জনপ্রিয় মডিউল হলো:
Guava ব্যবহার করার জন্য আপনাকে Maven প্রজেক্টে ডিপেন্ডেন্সি যোগ করতে হবে। pom.xml ফাইলে নিচের ডিপেন্ডেন্সিটি যোগ করুন:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.1-jre</version>
</dependency>
Guava Collections এর মধ্যে বেশ কিছু উন্নত ডেটা স্ট্রাকচার রয়েছে, যা Java Collections Framework এর সাথে যুক্ত করা হয়েছে। এর মধ্যে রয়েছে Immutable Collections, Multimap, BiMap, ইত্যাদি।
Immutable Collections হলো এমন একটি ডেটা স্ট্রাকচার, যা একবার তৈরি করার পর আর পরিবর্তন করা যায় না। Guava এর মাধ্যমে সহজেই Immutable Collection তৈরি করা যায়:
import com.google.common.collect.ImmutableList;
public class ImmutableCollectionExample {
public static void main(String[] args) {
ImmutableList<String> fruits = ImmutableList.of("Apple", "Banana", "Mango");
// ImmutableList এর উপাদান প্রিন্ট করা
for (String fruit : fruits) {
System.out.println(fruit);
}
// এটি Exception ছুড়বে, কারণ ImmutableList পরিবর্তনযোগ্য নয়
// fruits.add("Orange");
}
}
এই উদাহরণে, ImmutableList তৈরি করা হয়েছে, যা পরিবর্তনযোগ্য নয়। যদি আপনি এটি পরিবর্তন করতে চান, তবে এটি UnsupportedOperationException থ্রো করবে।
Multimap হলো একটি বিশেষ ধরণের ডেটা স্ট্রাকচার, যেখানে একাধিক ভ্যালু একটি কী এর সাথে যুক্ত থাকতে পারে। এটি Map এর মতো, তবে একাধিক ভ্যালু সংরক্ষণ করতে পারে:
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
public class MultimapExample {
public static void main(String[] args) {
Multimap<String, String> multimap = ArrayListMultimap.create();
// একাধিক ভ্যালু একটি কী এর সাথে যোগ করা
multimap.put("Fruit", "Apple");
multimap.put("Fruit", "Banana");
multimap.put("Vegetable", "Carrot");
// Fruit কী এর সব ভ্যালু প্রিন্ট করা
System.out.println("Fruits: " + multimap.get("Fruit"));
}
}
এই উদাহরণে, Multimap ব্যবহার করে একাধিক Fruit একটি কী এর সাথে সংরক্ষণ করা হয়েছে।
Guava স্ট্রিং ম্যানিপুলেশনকে সহজ করার জন্য বেশ কিছু শক্তিশালী টুল সরবরাহ করে, যেমন Joiner, Splitter, ইত্যাদি।
Joiner ব্যবহার করে আপনি সহজেই একাধিক স্ট্রিংকে একত্রিত করতে পারেন:
import com.google.common.base.Joiner;
public class JoinerExample {
public static void main(String[] args) {
String result = Joiner.on(", ").join("Apple", "Banana", "Mango");
System.out.println(result); // আউটপুট: Apple, Banana, Mango
}
}
উপরের উদাহরণে, Joiner ব্যবহার করে কমা এবং স্পেস দিয়ে স্ট্রিংগুলো একত্রিত করা হয়েছে।
Splitter ব্যবহার করে আপনি স্ট্রিংকে আলাদা আলাদা অংশে ভাগ করতে পারেন:
import com.google.common.base.Splitter;
public class SplitterExample {
public static void main(String[] args) {
Iterable<String> result = Splitter.on(",").trimResults().split("Apple, Banana, Mango");
for (String str : result) {
System.out.println(str);
}
}
}
এই উদাহরণে, Splitter ব্যবহার করে কমা দিয়ে বিভক্ত করা হয়েছে এবং প্রতিটি উপাদান প্রিন্ট করা হয়েছে।
Caching মেমরিতে ডেটা সংরক্ষণ করে অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করার জন্য ব্যবহৃত হয়। Guava এর মাধ্যমে সহজে ক্যাশ ম্যানেজমেন্ট করা যায়:
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import java.util.concurrent.TimeUnit;
public class CacheExample {
public static void main(String[] args) {
// Cache তৈরি করা
Cache<String, String> cache = CacheBuilder.newBuilder()
.expireAfterWrite(5, TimeUnit.MINUTES)
.maximumSize(100)
.build();
// Cache এ ভ্যালু রাখা
cache.put("name", "John");
// Cache থেকে ভ্যালু রিটার্ন করা
System.out.println("Name from cache: " + cache.getIfPresent("name"));
}
}
এই উদাহরণে, Guava এর Cache ব্যবহার করে ৫ মিনিটের জন্য ডেটা ক্যাশে সংরক্ষণ করা হয়েছে।
Preconditions ক্লাস ব্যবহার করে আপনি মেথডের ইনপুট যাচাই করতে পারেন এবং যদি ইনপুট সঠিক না হয় তবে exception থ্রো করাতে পারেন:
import com.google.common.base.Preconditions;
public class PreconditionsExample {
public static void main(String[] args) {
int age = 15;
Preconditions.checkArgument(age >= 18, "Age must be 18 or above");
}
}
এই উদাহরণে, যদি বয়স ১৮ এর কম হয়, তবে IllegalArgumentException থ্রো করা হবে।
Guava হলো একটি শক্তিশালী এবং কার্যকর Java লাইব্রেরি, যা ডেভেলপারদের উন্নত ডেটা স্ট্রাকচার, ক্যাশিং, স্ট্রিং ম্যানিপুলেশন এবং কনকারেন্সি টুলস সরবরাহ করে। এটি Java Collections Framework এর সীমাবদ্ধতাগুলো কাটিয়ে উঠতে সাহায্য করে এবং ডেভেলপারদের কোডিং সহজ ও দ্রুত করে তোলে। Guava এর API খুবই সহজ এবং উন্নত, যা বড় বড় প্রজেক্টে কার্যকরভাবে ব্যবহৃত হয়।
আপনি আমাকে যেকোনো প্রশ্ন করতে পারেন, যেমনঃ
Are you sure to start over?